package cn.chrisx.dradx;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

import cn.chrisx.drad.DrAdSdk;
import cn.chrisx.drad.admob.AdMobAdConfig;
import cn.chrisx.drad.core.DrAdConfig;
import cn.chrisx.drad.core.DrAdError;
import cn.chrisx.drad.dr.DrAbstractAd;
import cn.chrisx.drad.dr.DrInterstitialAd;
import cn.chrisx.drad.dr.DrRewardAdListener;
import cn.chrisx.drad.dr.SimpleAdListener;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initDrAd();

        useDrAd();
    }

    private void initDrAd() {
        // 设置是否为 debug 模式
        DrAdSdk.setDebug(BuildConfig.DEBUG);


    }

    private final List<DrAbstractAd> ads = new ArrayList<>();

    private void useDrAd() {
        DrInterstitialAd interstitialAd = new DrInterstitialAd();

        ads.add(interstitialAd);

        // 设置平台信息，以下为示例
        AdMobAdConfig adMobAdConfig = new AdMobAdConfig();

        adMobAdConfig.setAdUnitId("广告ID");
        adMobAdConfig.setAppId("APP ID");

        // 如果为 banner 设置以下信息
        ViewGroup bannerPlaceholder = findViewById(R.id.banner_placeholder);

        adMobAdConfig.banner(bannerPlaceholder, com.google.android.gms.ads.AdSize.BANNER);

        // 使用默认大小使用以下方法
        adMobAdConfig.setAdContainer(bannerPlaceholder);

        // banner 设置完成


        // 是否设置只在debug状态下使用，默认 false
        adMobAdConfig.setOnlyDebug(false);

        // 平台配置设置完成，其他平台设置与以上相同


        interstitialAd.setAdConfigs(new DrAdConfig[]{adMobAdConfig});

        // 加载完成后自动展示
        interstitialAd.setAutoShow(true);

        // 如果是激励广告，设置以下监听，也可以使用 setAdListener
        interstitialAd.setRewardAdListener(new DrRewardAdListener() {
            @Override
            public void onReward(DrAbstractAd ad, boolean suc, @Nullable Object reward) {

            }
        });

        // 设置广告监听，使用 SimpleAdListener 可以监听 激励广告
        interstitialAd.setAdListener(new SimpleAdListener() {
            @Override
            public void onAdLoadSuccess(DrAbstractAd ad) {
                // 广告加载成功

            }

            @Override
            public void onAdLoadFailed(DrAbstractAd ad, int errorCode) {
                // 广告加载失败

                switch (errorCode) {

                    case DrAdError.ERROR_NO_CONFIG:
                        // 没有配置任何平台信息

                        break;

                    case DrAdError.ERROR_REQUEST:
                        // 上一个广告还在请求中

                        break;
                    case DrAdError.ERROR_NO_FILL:
                        // 所有平台请求完成，均无广告请求成功
                        break;
                }

            }

            @Override
            public void onAdShow(DrAbstractAd ad) {
                // 广告展示了，注意：banner广告可能不会触发此方法

            }

            @Override
            public void onAdDismiss(DrAbstractAd ad) {
                // 广告关闭了，注意：banner广告可能不会触发此方法

            }

            @Override
            public void onAdClicked(DrAbstractAd ad) {
                // 广告被点击了，注意：激励 广告(Reward,RewardVideo)可能不会触发此方法
            }

            @Override
            public void onAdLoadingError(DrAbstractAd ad, DrAdConfig config, int errorCode, DrAdError ex) {
                // 广告加载中的错误
                switch (errorCode) {
                    case DrAdError.ERROR_DEBUG:
                        // 仅 debug 模式使用

                        break;

                    case DrAdError.ERROR_VALID:
                        // 上一个广告还在有效期内

                        break;
                    case DrAdError.ERROR_NOT_SUPPORT:
                        // 此平台不支持的广告类型

                        break;
                    case DrAdError.ERROR_THIRD:
                        // 平台自己的错误


                        break;
                }

            }


            @Override
            public void onReward(DrAbstractAd ad, boolean suc, Object reward) {

                // 激励广告返回
                if (suc) {
                    // 成功

                } else {
                    // 失败
                }

            }
        });


    }

    @Override
    protected void onPause() {
        super.onPause();

        for (DrAbstractAd ad : ads) {
            ad.onPause(this);
        }

    }

    @Override
    protected void onResume() {
        super.onResume();
        for (DrAbstractAd ad : ads) {
            ad.onResume(this);
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        for (DrAbstractAd ad : ads) {
            ad.onDestroy(this);
        }

    }
}
